רשימות המוגדרות בצורה רקורסיבית
מבנה
נתונים ואלגוריתמים
אנו יכולים
להגדיר רשימה כ:
א.
ריקה
ב.
או, מכילה
חוליה וקישור לרשימה.
ניתן לסרוק
רשימה תוך שימוש בפונקציה רקורסיבית:
כגון: ספירת מספר הפריטים ברשימה:
int ListCount( List l ) { if ( l == NULL ) return 0; else return 1 + ListCount( l->next ); }
בכל אופן,
מסתבר כי מהר יותר לכתוב פונקציה זו ללא קריאה רקורסיבית:
int ListCount( List l ) { int cnt = 0; while ( l != NULL ) { cnt++; l = l->next; } return cnt; }
תקורת הקריאות
לפונקציה הינה גדולה בכל מחשב, כך שהגרסה האינרטיבית מיושמת מהר יותר.
(פקטור נוסף
במחשבים מודרניים הינו ההסתמכות הרבה על ה-cache: הקוד אינטרטיבי הנ"ל איננו משתמש בזיכרון רב מחסנית לקריאה
ודבר זה מאפשר שימוש טוב יותר ב-cache.)
חזור ל: עצים חזור ל: תוכן
עניינים